package com.cy.pj.common.pool;

import org.springframework.context.annotation.Lazy;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;

/*
    假设这是一个对象池
    FAQ?

 */
@Scope("singleton")//默认作用域为单例作用域，此作用域通常会配合延迟加载使用
//@Scope("prototype")//多例作用域，每次从spring请求类的实例都会创建新的对象，支持延迟加载，无需使用@lazy注解描述
@Lazy //延迟对象的实例的创建，用的时候才创建
@Component
public class ObjectPool {

    public ObjectPool(){
        System.out.println("ObjectPool()执行了...");
    }
    @PostConstruct//生命周期初始化方法，构造方法之后执行，可以在此方法
                //内部作用一些初始化
    public void init(){
        System.out.println("init()..");
    }
    @PreDestroy//生命周期销毁方法，对象销毁之前执行，可以在对象销毁
            //前做一些资源释放操作
    public void destory(){
        System.out.println("destory()...");
    }
}
